home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / vdl020d.zip / VBIOS.DOC < prev    next >
Text File  |  1993-04-14  |  15KB  |  486 lines

  1. {
  2.  ══════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix BIOS Unit (VBIOS)
  5.  Copyright 1991,92,93 Visionix
  6.  ALL RIGHTS RESERVED
  7.  
  8.  ──────────────────────────────────────────────────────────────────────────────
  9.  
  10.  Revision history in reverse chronological order:
  11.  
  12.  Initials  Date      Comment
  13.  ────────  ────────  ──────────────────────────────────────────────────────────
  14.  
  15.  mep       02/13/93  Added various tables
  16.  
  17.  mep       02/11/93  Cleaned up code for beta release
  18.  
  19.  jrt       02/08/93  Sync with beta 0.12 release
  20.  
  21.  jrt       12/07/92  Sync with beta 0.11 release
  22.  
  23.  jrt       11/25/92  Created
  24.  
  25.  ──────────────────────────────────────────────────────────────────────────────
  26. }
  27.  
  28. Unit VBIOS;
  29.  
  30.  
  31. {──────────────────────────────────────────────────────────────────────────────}
  32.  
  33. { Defination of abbreviated terms below:
  34.  
  35.    Addr  = Address
  36.    Alpha = Alphanumeric
  37.    Alt   = Alternate
  38.    Attr  = Attribute
  39.    Brdr  = Border
  40.    Buf   = Buffer
  41.    Cmd   = Command
  42.    Col   = Column
  43.    Com   = Communications (serial)
  44.    Ctrl  = Control
  45.    Curr  = Current
  46.    DCC   = Display Combination Code
  47.    Disp  = Display
  48.    Dyn   = Dynamic
  49.    Equip = Equipment on system
  50.    Err   = Error
  51.    Ext   = Extended
  52.    Gen   = Generator
  53.    Grfx  = Graphic
  54.    Idx   = Index
  55.    Intr  = Interrupt
  56.    Kbd   = Keyboard
  57.    Lpt   = Printer (parallel)
  58.    Mem   = Memory
  59.    Ofs   = Offset
  60.    Op    = Operation
  61.    Pal   = Palette
  62.    Param = Parameters
  63.    Prof  = Profile
  64.    Ptr   = Pointer
  65.    Reg   = Register
  66.    Rsvp  = Reserved for future use (unknown)
  67.    Sec   = Secondary
  68.    Sect  = Sector
  69.    Sel   = Select
  70.    Stat  = Status
  71.    Strt  = Start
  72.    Trk   = Track
  73.    Usr   = User
  74.    VSPT  = Video Save Pointer Table
  75.    Vid   = Video
  76. }
  77.  
  78. Type
  79.  
  80.   TDiskAddrField = RECORD
  81.  
  82.     Trk          : BYTE;
  83.     Head         : BYTE;
  84.     Sect         : BYTE;
  85.     BytesPerSect : BYTE;
  86.  
  87.   END;
  88.  
  89.   {---}
  90.  
  91.   TBiosMemMap = RECORD
  92.  
  93.     ComAddr              : Array[1..4] of WORD;   {00}
  94.     LptAddr              : Array[1..4] of WORD;   {08}
  95.     Equip                : WORD;                  {10}
  96.     Rsvp1                : BYTE;                  {12}
  97.     BaseMem              : WORD;                  {13}
  98.     Rsvp2                : BYTE;                  {15}
  99.     Rsvp3                : BYTE;                  {16}
  100.     KbdFlag1             : BYTE;                  {17}
  101.     KbdFlag2             : BYTE;                  {18}
  102.     KbdAltKeypad         : BYTE;                  {19}
  103.     KbdBufHead           : WORD;                  {1A}
  104.     KbdBufTail           : WORD;                  {1C}
  105.     KbdBuf               : Array[1..16] of WORD;  {1E}
  106.     DiskRecalStat        : BYTE;                  {3E}
  107.     DiskMotorStat        : BYTE;                  {3F}
  108.     DiskOffTimeout       : BYTE;                  {40}
  109.     DiskLastOpStat       : BYTE;                  {41}
  110.     DiskCmdStat          : Array[1..7] of BYTE;   {42}
  111.     VidCurrMode          : BYTE;                  {49}
  112.     VidCurrCol           : WORD;                  {4A}
  113.     VidPageSize          : WORD;                  {4C}
  114.     VidCurrPageAddr      : WORD;                  {4E}
  115.     VidCursorPos         : Array[1..8] of WORD;   {50}
  116.     VidCursorType        : WORD;                  {60}
  117.     VidCurrPage          : BYTE;                  {62}
  118.     VidCRTCtrlAddr       : WORD;                  {63}
  119.     VidCurrModeSelReg    : BYTE;                  {65}
  120.     VidCurrCGAPalReg     : BYTE;                  {66}
  121.     PostRealModeAddr     : POINTER;               {67}
  122.     PostLastUnknownIntr  : BYTE;                  {6B}
  123.     TimerTicksToday      : LONGINT;               {6C}
  124.     TimerOverflow        : BOOLEAN;               {70}
  125.     CtrlBreak            : BYTE;                  {71}
  126.     PostReset            : WORD;                  {72}
  127.     FixedDiskLastOp      : BYTE;                  {74}
  128.     FixedDiskNumDrive    : BYTE;                  {75}
  129.     FixedDiskCtrl        : BYTE;                  {76}
  130.     FixedDiskIOPortOfs   : BYTE;                  {77}
  131.     LptTimeout           : Array[1..4] of BYTE;   {78}
  132.     ComTimeout           : Array[1..4] of BYTE;   {7C}
  133.     KbdBufStartOfs       : WORD;                  {80}
  134.     KbdBufEndOfs         : WORD;                  {82}
  135.     VidVGACurrRow        : BYTE;                  {84}
  136.     VidVGACharScanSize   : WORD;                  {85}
  137.     VidVGACtrl           : BYTE;                  {87}
  138.     VidVGASwitch         : BYTE;                  {88}
  139.     VidVGAModeSetCtrl    : BYTE;                  {89}
  140.     VidVGADCCBase        : BYTE;                  {8A}
  141.     DiskMediaCtrl        : BYTE;                  {8B}
  142.     FixedDiskCtrlStat    : BYTE;                  {8C}
  143.     FixedDiskCtrlErrStat : BYTE;                  {8D}
  144.     FixedDiskIntrCtrl    : BYTE;                  {8E}
  145.     DiskCtrlStat         : BYTE;                  {8F}
  146.     Disk0MediaStat       : BYTE;                  {90}
  147.     Disk1MediaStat       : BYTE;                  {91}
  148.     Disk0MediaStrtOpStat : BYTE;                  {92}
  149.     Disk1MediaStrtOpStat : BYTE;                  {93}
  150.     Disk0MediaCurrTrk    : BYTE;                  {94}
  151.     Disk1MediaCurrTrk    : BYTE;                  {95}
  152.     KbdStat1             : BYTE;                  {96}
  153.     KbdStat2             : BYTE;                  {97}
  154.     TimerUsrWaitAddr     : POINTER;               {98}
  155.     TimerUsrWaitTimeout  : LONGINT;               {9C}
  156.     TimerWaitActiveStat  : BYTE;                  {A0}
  157.     NetRsvp1             : Array[1..7] of BYTE;   {A1}
  158.     VidVGAVSPTAddr       : POINTER;               {A8}
  159.     VidDynSaveAreaAddr   : POINTER;               {AC}
  160.     VidAlphaCharGenAddr  : POINTER;               {B0}
  161.     VidGrfxCharGenAddr   : POINTER;               {B4}
  162.     VidSecSaveAddr       : POINTER;               {B8}
  163.     Rsvp6                : Array[1..4] of BYTE;   {BC}
  164.     Rsvp7                : Array[1..$E] of BYTE;  {C0}
  165.     TimerDaysSinceBoot   : WORD;                  {CE}
  166.     Rsvp8                : Array[1..$20] of BYTE; {D0}
  167.     UsrRsvp1             : Array[1..$10] of BYTE; {F0}
  168.     LptScrnStat          : BYTE;                  {100}
  169.  
  170.   END;
  171.  
  172.   PBiosMemMap = ^TBiosMemMap;
  173.  
  174.   {----}
  175.  
  176.   TVidSavePtrTable = RECORD
  177.  
  178.     VidParamTableAddr       : POINTER;
  179.     ParamDynSaveAreaAddr    : POINTER;
  180.     AlphaSetOverrideAddr    : POINTER;
  181.     GrfxCharSetOverrideAddr : POINTER;
  182.     SecSavePtrTableAddr     : POINTER;
  183.     Rsvp1                   : LONGINT;
  184.     Rsvp2                   : LONGINT;
  185.  
  186.   END;
  187.  
  188.   {----}
  189.  
  190.   TSecVidSavePtrTable = RECORD
  191.  
  192.     TableSize                  : WORD;
  193.     DCCTableAddr               : POINTER;
  194.     SecAlphaSetOverrideAddr    : POINTER;
  195.     UsrPalProfTableAddr        : POINTER;
  196.     Rsvp1                      : LONGINT;
  197.     Rsvp2                      : LONGINT;
  198.     Rsvp3                      : LONGINT;
  199.  
  200.   END;
  201.  
  202.   {----}
  203.  
  204.   TEGAVGAVidParamElement = RECORD
  205.  
  206.     CurrCol      : BYTE;
  207.     CurrRow      : BYTE;
  208.     CharScanSize : BYTE;
  209.     PageSize     : WORD;
  210.     SequencerReg : Array[1..4] of BYTE;
  211.     MiscOutReg   : BYTE;
  212.     CRTCReg      : Array[0..$18] of BYTE;
  213.     AttrCtrlReg  : Array[0..$13] of BYTE;
  214.     GrfxCtrlReg  : Array[0..$8] of BYTE;
  215.  
  216.   END;
  217.  
  218.   TEGAVidParamTable = RECORD
  219.  
  220.     VidMode : Array[0..$16] of TEGAVGAVidParamElement;
  221.  
  222.   END;
  223.  
  224.   TVGAVidParamTable = RECORD
  225.  
  226.     VidMode : Array[0..$1C] of TEGAVGAVidParamElement;
  227.  
  228.   END;
  229.  
  230.   {----}
  231.  
  232.   TMCGAVidParamElement = RECORD
  233.  
  234.     CurrCol            : BYTE;
  235.     CurrRow            : BYTE;
  236.     CharScanSize       : BYTE;
  237.     PageSize           : WORD;
  238.     Rsvp1              : BYTE;
  239.     Port3D5VidDataReg  : Array[0..$14] of BYTE;
  240.     Port3C6PELMask     : BYTE;
  241.     Port3D8CGAModeCtrl : BYTE;
  242.     Port3D9CGABrdrCtrl : BYTE;
  243.     Port3DDExtModeCtrl : BYTE;
  244.  
  245.   END;
  246.  
  247.   TMCGAVidParamTable = RECORD
  248.  
  249.     RGB_DACInfo : Array[1..$F, 1..3] of BYTE;
  250.     VidMode     : Array[0..10] of TMCGAVidParamElement;
  251.  
  252.   END;
  253.  
  254.   {----}
  255.  
  256.   TParamDynSaveArea = RECORD
  257.  
  258.     LastAttrCtrlPalReg      : Array[0..$F] of BYTE;
  259.     LastAttrCtrlOverscanReg : BYTE;
  260.     Rsvp1                   : Array[$11..$FF] of BYTE;
  261.  
  262.   END;
  263.  
  264.   {----}
  265.  
  266.   TAlphaSetOverride = RECORD
  267.  
  268.     FontTableCharSize : BYTE;
  269.     CharGenRAMBank    : BYTE;
  270.     NumFontTableChars : WORD;
  271.     FontTableCharCode : WORD;
  272.     FontTableAddr     : POINTER;
  273.     DispRows          : BYTE;
  274.     FontModes         : Array[1..1] of BYTE;  { !^! Needs to be a link-list }
  275.     EOFontModes       : BYTE;  { ends with an $FF }
  276.  
  277.   END;
  278.  
  279.   {----}
  280.  
  281.   TSecAlphaSetOverride = RECORD
  282.  
  283.     FontTableCharSize : BYTE;
  284.     CharGenRAMBank    : BYTE;
  285.     Rsvp1             : BYTE;
  286.     FontTableAddr     : POINTER;
  287.     FontModes         : Array[1..1] of BYTE; { !^! Needs to be a link-list }
  288.     EOFontModes       : BYTE; { !^! ends with an $FF }
  289.  
  290.   END;
  291.  
  292.   {----}
  293.  
  294.   TGrfxCharSetOverride = RECORD
  295.  
  296.     DispRows          : BYTE;
  297.     FontTableCharSize : BYTE;
  298.     FontTableAddr     : POINTER;
  299.     FontModes         : Array[1..1] of BYTE; { !^! Needs to be a link-list }
  300.     EOFontModes       : BYTE; { !^! ends with an $FF }
  301.  
  302.   END;
  303.  
  304.   {----}
  305.  
  306.   TDCCEntry = RECORD
  307.  
  308.     Case Boolean of
  309.  
  310.       TRUE  : ( DC : WORD );
  311.       FALSE : ( Hi,
  312.                 Lo  : BYTE );
  313.  
  314.     End;
  315.  
  316.  
  317.   TDCCTable = RECORD  { Display Combination Code Table }
  318.  
  319.     NumEntries        : BYTE;
  320.     Version           : BYTE;
  321.     MaxDispTypeCode   : BYTE;
  322.     Rsvp1             : BYTE;
  323.  
  324.     {!^! List list? or 2 entries?}
  325.     DispComb          : Array[1..1] of TDCCEntry;
  326.  
  327.   END;
  328.  
  329.   {----}
  330.  
  331.   TUsrPalProfTable = RECORD
  332.  
  333.     Global          : BYTE;
  334.     Rsvp1           : BYTE;
  335.     Rsvp2           : WORD;
  336.     NumAttrCtrlReg  : WORD;
  337.     AttrCtrlRegIdx  : WORD;
  338.     AttrCtrlRegAddr : POINTER;
  339.     NumDACColorReg  : WORD;
  340.     DACColorRegIdx  : WORD;
  341.     DACColorRegAddr : POINTER;
  342.  
  343.     ProfModes       : Array[1..1] of BYTE; { !^! Needs to be a link-list }
  344.     EOProfModes     : BYTE; { !^! ends with an $FF }
  345.  
  346.   END;
  347.  
  348.   {----}
  349.  
  350.   TCharPixelMap = Array[0..7] of BYTE;
  351.   PCharPixelMap = ^TCharPixelMap;
  352.  
  353.   {----}
  354.  
  355. Var
  356.  
  357.   BIOSMemMap : PBIOSMemMap;
  358.  
  359. {──────────────────────────────────────────────────────────────────────────────}
  360.  
  361. {-----------------}
  362. { Keyboard Status }
  363. {-----------------}
  364.  
  365. Function  IsAltPressed        : BOOLEAN;
  366.  
  367. Function  IsLeftAltPressed    : BOOLEAN;
  368.  
  369. Function  IsRightAltPressed   : BOOLEAN;
  370.  
  371. Function  IsCtrlPressed       : BOOLEAN;
  372.  
  373. Function  IsLeftCtrlPressed   : BOOLEAN;
  374.  
  375. Function  IsRightCtrlPressed  : BOOLEAN;
  376.  
  377. Function  IsShiftPressed      : BOOLEAN;
  378.  
  379. Function  IsLeftShiftPressed  : BOOLEAN;
  380.  
  381. Function  IsRightShiftPressed : BOOLEAN;
  382.  
  383. Function  IsInsertPressed     : BOOLEAN;
  384.  
  385. Function  IsInsertActive      : BOOLEAN;
  386.  
  387. Function  IsCapsLockPressed   : BOOLEAN;
  388.  
  389. Function  IsCapsLockActive    : BOOLEAN;
  390.  
  391. Function  IsNumLockPressed    : BOOLEAN;
  392.  
  393. Function  IsNumLockActive     : BOOLEAN;
  394.  
  395. Function  IsScrollLockPressed : BOOLEAN;
  396.  
  397. Function  IsScrollLockActive  : BOOLEAN;
  398.  
  399. Function  IsPauseStateActive  : BOOLEAN;
  400.  
  401. Function  IsSysReqPressed     : BOOLEAN;
  402.  
  403. Procedure ToggleCapsLock(            OnOff          : BOOLEAN );
  404.  
  405. Procedure ToggleInsert(              OnOff          : BOOLEAN );
  406.  
  407. Procedure ToggleNumLock(             OnOff          : BOOLEAN );
  408.  
  409. Procedure ToggleScrollLock(          OnOff          : BOOLEAN );
  410.  
  411. Function  PrevReadKey         : WORD;
  412.  
  413. {──────────────────────────────────────────────────────────────────────────────}
  414.  
  415. Function  V13ResetDiskSystem(        DriveNum       : BYTE    ) : BYTE;
  416.  
  417. Function  V13ReadDiskStatus(         DriveNum       : BYTE    ) : BYTE;
  418.  
  419. Function  V13ReadDiskSectors(        DriveNum       : BYTE;
  420.                                      NumSectors     : BYTE;
  421.                                      Track          : BYTE;
  422.                                      Sector         : BYTE;
  423.                                      Head           : BYTE;
  424.                                      Buff           : POINTER ) : WORD;
  425.  
  426. Function  V13WriteDiskSectors(       DriveNum       : BYTE;
  427.                                      NumSectors     : BYTE;
  428.                                      Track          : BYTE;
  429.                                      Sector         : BYTE;
  430.                                      Head           : BYTE;
  431.                                      Buff           : POINTER ) : WORD;
  432.  
  433. Function  V13VerifyDiskSectors(      DriveNum       : BYTE;
  434.                                      NumSectors     : BYTE;
  435.                                      Track          : BYTE;
  436.                                      Sector         : BYTE;
  437.                                      Head           : BYTE;
  438.                                      Buff           : POINTER ) : WORD;
  439.  
  440. Function  V13FormatDiskTrack(        DriveNum       : BYTE;
  441.                                      Head           : BYTE;
  442.                                      Track          : BYTE;
  443.                                      AddrFieldBuff  : POINTER ) : WORD;
  444.  
  445. Function  V13ReadDiskParams(         DriveNum       : BYTE;
  446.                                  Var DriveType      : BYTE;
  447.                                  Var MaxTrack       : BYTE;
  448.                                  Var MaxSector      : BYTE;
  449.                                  Var MaxHead        : BYTE;
  450.                                  Var NumDrives      : BYTE;
  451.                                      MaxDPT         : POINTER ) : BYTE;
  452.  
  453. Function  V13REadDriveType(          DriveNum       : BYTE    ) : WORD;
  454.  
  455. Function  V13DetectMediaChange(      DriveNum       : BYTE    ) : WORD;
  456.  
  457. Function  V13SetDiskType(            DiskType       : BYTE    ) : WORD;
  458.  
  459. Function  V13SetMediaType(           DriveNum       : BYTE;
  460.                                      MaxTracks      : BYTE;
  461.                                      MaxSPT         : BYTE;
  462.                                      DPT            : POINTER ) : WORD;
  463.  
  464. Function  V16ReadKeyboardInput : WORD;
  465.  
  466. Function  V16ReadKeyboardStatus : WORD;
  467.  
  468. Function  V16ReadShiftStatus : WORD;
  469.  
  470. Procedure V16SetTypematicParams(     Rate           : BYTE;
  471.                                      Delay          : BYTE    );
  472.  
  473. Procedure V16WriteKeyboardInput(     ScanCode       : BYTE;
  474.                                      ASCIIChar      : BYTE    );
  475.  
  476. Function  V16ReadExtKeyboardInput : WORD;
  477.  
  478. Function  V16ReadExtKeyboardStatus : WORD;
  479.  
  480. Function  V16ReadExtShiftStatus : WORD;
  481.  
  482. Function  GetCGAPixelMap( Ch : CHAR ) : PCharPixelMap;
  483.  
  484. {──────────────────────────────────────────────────────────────────────────────}
  485.  
  486.